home *** CD-ROM | disk | FTP | other *** search
/ Skunkware 5 / Skunkware 5.iso / src / X11 / wais / waisgate / ustubs.c < prev    next >
C/C++ Source or Header  |  1995-05-09  |  4KB  |  163 lines

  1. /* WIDE AREA INFORMATION SERVER SOFTWARE    
  2.    No guarantees or restrictions.  See the readme file for the full standard 
  3.    disclaimer.  
  4.    4.14.90    Harry Morris, morris@think.com
  5. */
  6.  
  7. #ifndef lint
  8. static char *RCSid = "$Header: /tmp_mnt/net/quake/proj/wais/wais-8-b5/ir/RCS/ustubs.c,v 1.4 92/05/06 17:35:13 jonathan Exp $";
  9. #endif
  10.  
  11. /* Change log:
  12.  * $Log:    ustubs.c,v $
  13.  * Revision 1.4  92/05/06  17:35:13  jonathan
  14.  * Modified some #if's for NeXT and Mach.
  15.  * 
  16.  * Revision 1.3  92/03/06  11:08:49  jonathan
  17.  * fixed incompatible return type error in HP version of getwd.  Thanks to
  18.  * cshotton@oac.hsc.uth.tmc.edu.
  19.  * 
  20.  * Revision 1.2  92/02/12  13:54:29  jonathan
  21.  * Added "$Log" so RCS will put the log message in the header
  22.  * 
  23.  * 
  24. */
  25.  
  26. /*----------------------------------------------------------------------*/
  27. /* stubs for silly non-ansi c compilers                                 */
  28. /*----------------------------------------------------------------------*/
  29.  
  30. #include "ustubs.h"
  31. #include "cutil.h" /* for substrcmp and NULL */
  32.  
  33.  
  34.  
  35. /*----------------------------------------------------------------------*/
  36. /* believe it or not, HP does not have bzero or bcopy                   */
  37.  
  38. #ifdef hpux
  39.  
  40. void bzero(ptr, len)
  41. char *ptr;
  42. int len;
  43. {
  44.   long count;
  45.   for (count = 0; count < len; count++){
  46.     *(char*)(ptr + count) = 0;
  47.     }
  48. }
  49.  
  50. char *bcopy(src, dest, len)
  51. char *dest, *src;
  52. int len;
  53. {
  54.   return((char*)memmove(dest, src, len));
  55. }
  56.  
  57. char *getwd(pathname)
  58. char *pathname;
  59. {
  60.   return((char*)getcwd(pathname, MAX_FILENAME_LEN));
  61. }
  62.  
  63. #endif 
  64.  
  65. #ifdef SYSV
  66. #include <prototypes.h> /* may be XENIX dependent! */
  67. char *
  68. getwd(pathname)
  69. char *pathname;
  70. {
  71.   return(getcwd(pathname, MAX_FILENAME_LEN));
  72. }
  73. #endif /* def SYSV */
  74.  
  75. /*----------------------------------------------------------------------*/
  76.  
  77. #ifndef ANSI_LIKE   /* memmove is an ANSI function not defined by K&R */
  78. #ifndef hpux /* but HP defines it */
  79. void*
  80. memmove(str1,str2,n)
  81. void* str1;
  82. void* str2;
  83. size_t n;
  84. {
  85. #ifdef M_XENIX
  86.   memcpy((char*)str2,(char*)str1,(long)n); /* hope it works! */
  87. #else /* ndef M_XENIX */
  88.   bcopy((char*)str2,(char*)str1,(long)n);
  89. #endif /* ndef M_XENIX */
  90.   return(str1);
  91. }
  92. #endif /* ndef hpux */
  93.  
  94. #else /* ansi is defined */
  95.  
  96. #ifdef __GNUC__ /* we are ansi like, are we gcc */
  97.  
  98. #if !(defined(NeXT) || defined(Mach)) /* and we are not on a next ! */
  99.  
  100. void*
  101. memmove(str1,str2,n)
  102. void* str1;
  103. void* str2;
  104. size_t n;
  105. {
  106.   bcopy((char*)str2,(char*)str1,(long)n);
  107.   return(str1);
  108. }
  109.  
  110. #endif /* not NeXT or Mach */
  111.  
  112. #endif /* __GNUC__ */
  113.  
  114. #endif /* else ndef ANSI_LIKE */
  115.  
  116. /*----------------------------------------------------------------------*/
  117.  
  118. #ifndef ANSI_LIKE  
  119.  
  120. /* atoi is not defined k&r. copied from the book */
  121. long atol(s)
  122. char *s;
  123. {
  124.   long i, n, sign;
  125.   for(i=0; s[i]==' ' || s[i]== 'n' || s[i]=='t'; i++)
  126.     ;                /* skip white space */
  127.   sign = 1;
  128.   if (s[i] == '+' || s[i] == '-')
  129.     sign = (s[i++]=='+') ? 1 : -1;
  130.   for (n=0; s[i] >= '0' && s[i] <= '9'; i++)
  131.     n= 10 * n + s[i] - '0';
  132.   return(sign * n);
  133. }
  134.  
  135. /*----------------------------------------------------------------------*/
  136.  
  137. char *strstr(src,sub)
  138. char *src;
  139. char *sub;
  140. {
  141.   /* this is a poor implementation until the ANSI version catches on */
  142.   char *ptr;
  143.   for(ptr = src; (long)ptr <= (long)src + strlen(src) - strlen(sub); ptr++){
  144.     if(substrcmp(ptr, sub))
  145.       return(ptr);
  146.   }
  147.   return(NULL);
  148. }
  149.  
  150. /*----------------------------------------------------------------------*/
  151.  
  152. int remove(filename)
  153. char *filename;
  154. {
  155.   return(unlink(filename));
  156. }
  157.  
  158. /*----------------------------------------------------------------------*/
  159.  
  160. #endif /* ndef ANSI_LIKE */
  161.  
  162.  
  163.